home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / program / gucrtr13.lha / GUICreator1.3 / GUIC.lha / GUICreator / Demos / ManageCDPics.c < prev    next >
C/C++ Source or Header  |  1995-08-22  |  27KB  |  566 lines

  1. /*************************************************************************/
  2. /*                                                                       */
  3. /*   Includes                                                            */
  4. /*                                                                       */
  5. /*************************************************************************/
  6.  
  7. #include "ManageCDPics_Includes.h"
  8. #include "ManageCDPics.h"
  9.  
  10. /*************************************************************************/
  11. /*                                                                       */
  12. /*   Variables and Structures                                            */
  13. /*                                                                       */
  14. /*************************************************************************/
  15.  
  16. extern struct IntuitionBase   *IntuitionBase;
  17. extern struct GfxBase         *GfxBase;
  18.  
  19. extern struct Library *GadToolsBase ;
  20. extern struct Library *AslBase      ;
  21. extern struct Library *DataTypesBase;
  22.  
  23. /*************************************************************************/
  24. /*                                                                       */
  25. /*   Defines                                                             */
  26. /*                                                                       */
  27. /*************************************************************************/
  28.  
  29. #define RASTERX (GfxBase->DefaultFont->tf_XSize)
  30. #define RASTERY (GfxBase->DefaultFont->tf_YSize/2+4)
  31.  
  32. #define XSIZE(x)  ((x)*RASTERX)
  33. #define YSIZE(x)  ((x)*RASTERY)
  34.  
  35. #define XPOS(x)   (XSIZE(x)+customscreen->WBorLeft)
  36. #define YPOS(x)   (YSIZE(x)+customscreen->BarHeight+1)
  37.  
  38. #define ERROR_NO_WINDOW_OPENED      1001L
  39. #define ERROR_NO_PUBSCREEN_LOCKED   1002L
  40. #define ERROR_NO_GADGETS_CREATED    1003L
  41. #define ERROR_NO_VISUALINFO         1004L
  42. #define ERROR_NO_PICTURE_LOADED     1005L
  43. #define ERROR_NO_GADGETLIST_CREATED 1006L
  44. #define ERROR_NO_WINDOW_MENU        1007L
  45. #define ERROR_SCREEN_TOO_SMALL      1008L
  46. #define ERROR_LIST_NOT_INITIALIZED  1009L
  47. /// struct ManageCDPicsWindowData
  48. struct ManageCDPicsWindowData
  49.     {
  50.     BOOL    gd_Disabled_CD;
  51.     struct List *gd_Labels_CD;
  52.     UWORD   gd_Selected_CD;
  53.     UWORD   gd_Top_CD;
  54.     BOOL    gd_Disabled_Category;
  55.     struct List *gd_Labels_Category;
  56.     UWORD   gd_Selected_Category;
  57.     UWORD   gd_Top_Category;
  58.     BOOL    gd_Disabled_Picture;
  59.     struct List *gd_Labels_Picture;
  60.     UWORD   gd_Selected_Picture;
  61.     UWORD   gd_Top_Picture;
  62.     BOOL    gd_Disabled_Text;
  63.     char    gd_Text_Text[256];
  64.     BOOL    gd_Disabled_String;
  65.     char    gd_String_String[64];
  66.     BOOL    gd_Disabled_ToShow;
  67.     UWORD   gd_Active_ToShow;
  68.     char * *gd_Labels_ToShow;
  69.     BOOL    gd_Disabled_SavePrefs;
  70.     BOOL    gd_Disabled_Slideshow;
  71.     BOOL    gd_Disabled_Show;
  72.     };
  73.  
  74. ///
  75.  
  76. /*************************************************************************/
  77. /*                                                                       */
  78. /*   Routines to handle gadgets                                          */
  79. /*                                                                       */
  80. /*************************************************************************/
  81.  
  82. /// HandleGadgetsManageCDPicsWindow()
  83.  
  84. void HandleGadgetsManageCDPicsWindow(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,struct ManageCDPicsWindowData *gadgetdata,APTR userdata)
  85. {
  86.     switch(gadgetid)
  87.         {
  88.         case LVID_CD:
  89.             CDClicked(win,wingads,gadgetid,messagecode,userdata);
  90.             break;
  91.         case LVID_Category:
  92.             CategoryClicked(win,wingads,gadgetid,messagecode,userdata);
  93.             break;
  94.         case LVID_Picture:
  95.             PictureClicked(win,wingads,gadgetid,messagecode,userdata);
  96.             break;
  97.         case TXID_Text:
  98.             TextClicked(win,wingads,gadgetid,messagecode,userdata);
  99.             break;
  100.         case STID_String:
  101.             StringClicked(win,wingads,gadgetid,messagecode,userdata);
  102.             break;
  103.         case CYID_ToShow:
  104.             ToShowClicked(win,wingads,gadgetid,messagecode,userdata);
  105.             break;
  106.         case BTID_SavePrefs:
  107.             SavePrefsClicked(win,wingads,gadgetid,messagecode,userdata);
  108.             break;
  109.         case BTID_Slideshow:
  110.             SlideshowClicked(win,wingads,gadgetid,messagecode,userdata);
  111.             break;
  112.         case BTID_Show:
  113.             ShowClicked(win,wingads,gadgetid,messagecode,userdata);
  114.             break;
  115.         };
  116. }
  117. ///
  118.  
  119.  
  120. /*************************************************************************/
  121. /*                                                                       */
  122. /*   Routines to create gadgets                                          */
  123. /*                                                                       */
  124. /*************************************************************************/
  125.  
  126. /// CreateGadgetsManageCDPicsWindow()
  127. struct Gadget *CreateGadgetsManageCDPicsWindow(struct Gadget **gadgetlist,struct NewGadget newgad[],struct Gadget *wingads[],struct ManageCDPicsWindowData *gadgetdata)
  128. {
  129.     struct Gadget *gadget=CreateContext(gadgetlist);
  130.     if (gadget)
  131.         {
  132.         wingads[LVID_CD]=gadget=CreateGadget(LISTVIEW_KIND,gadget,&newgad[LVID_CD],GA_Disabled,gadgetdata->gd_Disabled_CD,GTLV_Labels,gadgetdata->gd_Labels_CD,GTLV_ReadOnly,FALSE,GTLV_Selected,gadgetdata->gd_Selected_CD,GTLV_ShowSelected,NULL,GTLV_Top,gadgetdata->gd_Top_CD,LAYOUTA_Spacing,0,TAG_END);
  133.         wingads[LVID_Category]=gadget=CreateGadget(LISTVIEW_KIND,gadget,&newgad[LVID_Category],GA_Disabled,gadgetdata->gd_Disabled_Category,GTLV_Labels,gadgetdata->gd_Labels_Category,GTLV_ReadOnly,FALSE,GTLV_Selected,gadgetdata->gd_Selected_Category,GTLV_ShowSelected,NULL,GTLV_Top,gadgetdata->gd_Top_Category,LAYOUTA_Spacing,0,TAG_END);
  134.         wingads[LVID_Picture]=gadget=CreateGadget(LISTVIEW_KIND,gadget,&newgad[LVID_Picture],GA_Disabled,gadgetdata->gd_Disabled_Picture,GTLV_Labels,gadgetdata->gd_Labels_Picture,GTLV_ReadOnly,FALSE,GTLV_Selected,gadgetdata->gd_Selected_Picture,GTLV_ShowSelected,NULL,GTLV_Top,gadgetdata->gd_Top_Picture,LAYOUTA_Spacing,0,TAG_END);
  135.         wingads[LAID_Gadget5]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget5],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  136.         wingads[LAID_Gadget6]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget6],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  137.         wingads[LAID_Gadget7]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget7],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  138.         wingads[TXID_Text]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[TXID_Text],GA_Disabled,gadgetdata->gd_Disabled_Text,GTTX_Border,TRUE,GTTX_CopyText,TRUE,GTTX_Text,gadgetdata->gd_Text_Text,TAG_END);
  139.         wingads[LAID_Gadget9]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget9],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  140.         wingads[STID_String]=gadget=CreateGadget(STRING_KIND,gadget,&newgad[STID_String],GA_Disabled,gadgetdata->gd_Disabled_String,GA_TabCycle,TRUE,GTST_MaxChars,64,GTST_String,gadgetdata->gd_String_String,GA_TabCycle,TRUE,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGLEFT,STRINGA_ReplaceMode,TRUE,TAG_END);
  141.         wingads[LAID_Gadget12]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget12],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  142.         wingads[CYID_ToShow]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_ToShow],GA_Disabled,gadgetdata->gd_Disabled_ToShow,GTCY_Labels,gadgetdata->gd_Labels_ToShow,GTCY_Active,gadgetdata->gd_Active_ToShow,TAG_END);
  143.         wingads[BTID_SavePrefs]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_SavePrefs],GA_Disabled,gadgetdata->gd_Disabled_SavePrefs,GT_Underscore,'_',TAG_END);
  144.         wingads[BTID_Slideshow]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Slideshow],GA_Disabled,gadgetdata->gd_Disabled_Slideshow,GT_Underscore,'_',TAG_END);
  145.         wingads[BTID_Show]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Show],GA_Disabled,gadgetdata->gd_Disabled_Show,GT_Underscore,'_',TAG_END);
  146.         return gadget;
  147.         }
  148.     else return NULL;
  149. }
  150. ///
  151.  
  152.  
  153. /*************************************************************************/
  154. /*                                                                       */
  155. /*   Routines to handle windows                                          */
  156. /*                                                                       */
  157. /*************************************************************************/
  158.  
  159.  
  160. /// HandleManageCDPicsWindow()
  161. void HandleManageCDPicsWindow(struct Screen *customscreen,LONG left,LONG top,APTR userdata)
  162. {
  163.     APTR visualinfo=GetVisualInfo(customscreen,TAG_DONE);
  164.     if (visualinfo)
  165.         {
  166.         struct Gadget  *gadgetlist = NULL;
  167.         struct Menu    *menustrip  = NULL;
  168.         ULONG height=33,width=79,maxheight=1024,maxwidth=1280;
  169.  
  170.         struct Gadget *wingads[14];
  171.  
  172.         char * title                  = "ManageCDPics © 1994-95 by Markus Hillenbrand";
  173.         struct Window     *win        = NULL;
  174.  
  175.         struct TextAttr   textattr    = { GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name,GfxBase->DefaultFont->tf_YSize,FS_NORMAL,FPF_DISKFONT };
  176.  
  177.         struct NewGadget  newgad[]    = {
  178.                                                      XPOS(1),YPOS(2),XSIZE(25),YSIZE(20),NULL,&textattr,LVID_CD,PLACETEXT_ABOVE,visualinfo,NULL,
  179.                                                      XPOS(27),YPOS(2),XSIZE(25),YSIZE(20),NULL,&textattr,LVID_Category,PLACETEXT_ABOVE,visualinfo,NULL,
  180.                                                      XPOS(53),YPOS(2),XSIZE(25),YSIZE(20),NULL,&textattr,LVID_Picture,PLACETEXT_ABOVE,visualinfo,NULL,
  181.                                                      XPOS(1),YPOS(0),XSIZE(25),YSIZE(2),"_CD:",&textattr,LAID_Gadget5,PLACETEXT_IN,visualinfo,NULL,
  182.                                                      XPOS(27),YPOS(0),XSIZE(25),YSIZE(2),"C_ategory:",&textattr,LAID_Gadget6,PLACETEXT_IN,visualinfo,NULL,
  183.                                                      XPOS(53),YPOS(0),XSIZE(25),YSIZE(2),"_Picture:",&textattr,LAID_Gadget7,PLACETEXT_IN,visualinfo,NULL,
  184.                                                      XPOS(1),YPOS(22),XSIZE(77),YSIZE(2),NULL,&textattr,TXID_Text,PLACETEXT_LEFT,visualinfo,NULL,
  185.                                                      XPOS(1),YPOS(25),XSIZE(29),YSIZE(2),"Program to _view Picture with:",&textattr,LAID_Gadget9,PLACETEXT_IN,visualinfo,NULL,
  186.                                                      XPOS(1),YPOS(27),XSIZE(51),YSIZE(2),NULL,&textattr,STID_String,PLACETEXT_LEFT,visualinfo,NULL,
  187.                                                      XPOS(53),YPOS(25),XSIZE(15),YSIZE(2),"Select _to show:",&textattr,LAID_Gadget12,PLACETEXT_IN,visualinfo,NULL,
  188.                                                      XPOS(53),YPOS(27),XSIZE(25),YSIZE(2),NULL,&textattr,CYID_ToShow,PLACETEXT_ABOVE,visualinfo,NULL,
  189.                                                      XPOS(1),YPOS(30),XSIZE(25),YSIZE(2),"_Save Prefs",&textattr,BTID_SavePrefs,PLACETEXT_IN,visualinfo,NULL,
  190.                                                      XPOS(27),YPOS(30),XSIZE(25),YSIZE(2),"Start S_lideshow",&textattr,BTID_Slideshow,PLACETEXT_IN,visualinfo,NULL,
  191.                                                      XPOS(53),YPOS(30),XSIZE(25),YSIZE(2),"Show P_icture(s)",&textattr,BTID_Show,PLACETEXT_IN,visualinfo,NULL,
  192.                                                   };
  193.         char *            LA_ToShow[]  = { "Single","Category","CD",NULL };
  194.  
  195.  
  196.         struct ManageCDPicsWindowData gadgetdata = {
  197.                                                      /* belongs to a listview gadget */
  198.                                                      FALSE,
  199.                                                      (struct List *)~0,
  200.                                                      0,
  201.                                                      0,
  202.                                                      /* belongs to a listview gadget */
  203.                                                      FALSE,
  204.                                                      (struct List *)~0,
  205.                                                      0,
  206.                                                      0,
  207.                                                      /* belongs to a listview gadget */
  208.                                                      FALSE,
  209.                                                      (struct List *)~0,
  210.                                                      0,
  211.                                                      0,
  212.                                                      /* belongs to a text gadget */
  213.                                                      FALSE,
  214.                                                      "",
  215.                                                      /* belongs to a string gadget */
  216.                                                      FALSE,
  217.                                                      "",
  218.                                                      /* belongs to a cycle gadget */
  219.                                                      FALSE,
  220.                                                      0,
  221.                                                      (char * *)&LA_ToShow[0],
  222.                                                      /* belongs to a button */
  223.                                                      FALSE,
  224.                                                      /* belongs to a button */
  225.                                                      FALSE,
  226.                                                      /* belongs to a button */
  227.                                                      FALSE,
  228.                                                   };
  229.  
  230.  
  231.         struct NewMenu    menu[]      = {
  232.                                                      NM_TITLE, "Program",0,0,0,0,
  233.                                                      NM_ITEM ,"About","A",0,0,0,
  234.                                                     };
  235.         height= YSIZE(height);
  236.         width = XSIZE(width) ;
  237.         if (left == -1) left  = (customscreen->Width-width)/2;
  238.         if (top  == -1) top   = (customscreen->Height-height)/2;
  239.  
  240.         if (CreateGadgetsManageCDPicsWindow(&gadgetlist,newgad,wingads,&gadgetdata) != NULL)
  241.             {
  242.             if (height>customscreen->Height || width>customscreen->Width) GUIC_ErrorReport(NULL,ERROR_SCREEN_TOO_SMALL);
  243.             win=OpenWindowTags(NULL,WA_Activate,         TRUE,
  244.                                             WA_CloseGadget,      TRUE,
  245.                                             WA_DepthGadget,      TRUE,
  246.                                             WA_SizeGadget,       TRUE,
  247.                                             WA_DragBar,          TRUE,
  248.                                             WA_Gadgets,          gadgetlist,
  249.                                             WA_InnerHeight,      height,
  250.                                             WA_InnerWidth,       width,
  251.                                             WA_IDCMP,            IDCMP_CLOSEWINDOW|IDCMP_NEWSIZE|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|IDCMP_MENUPICK|BUTTONIDCMP|STRINGIDCMP|CYCLEIDCMP|LISTVIEWIDCMP,
  252.                                             WA_Left,             left,
  253.                                             WA_Top,              top,
  254.                                             WA_MaxHeight,        maxheight,
  255.                                             WA_MinHeight,        height,
  256.                                             WA_MaxWidth,         maxwidth,
  257.                                             WA_MinWidth,         width,
  258.                                             WA_SizeBRight,       FALSE,
  259.                                             WA_SizeBBottom,      TRUE,
  260.                                             WA_SmartRefresh,     TRUE,
  261.                                             WA_CustomScreen,     customscreen,
  262.                                             WA_Title,            title,
  263.                                             WA_NewLookMenus,     TRUE,
  264.                                             TAG_END);
  265.             if (win)
  266.                 {
  267.                 menustrip=CreateMenus(menu,GTMN_NewLookMenus,TRUE,TAG_END);
  268.                 if (menustrip)
  269.                     {
  270.                     if (LayoutMenus(menustrip,visualinfo,GTMN_NewLookMenus,TRUE,TAG_END))
  271.                         {
  272.                         if (SetMenuStrip(win,menustrip))
  273.                             {
  274.                             struct IntuiMessage  *imessage   = NULL;
  275.                             struct Gadget        *idcmpgad   = NULL;
  276.                             struct NewGadget     ngcopy[]    = newgad;
  277.                             long   double        xscale      = 1.0;
  278.                             long   double        yscale      = 1.0;
  279.                             char * stringpointer             = NULL;
  280.                             ULONG                i           = 0;
  281.                             ULONG                gadgetcount = 14;
  282.                             ULONG  idcmpclass                = 0;
  283.                             UWORD  messagecode               = 0;
  284.                             BOOL   running                   = TRUE;
  285.                             ULONG  signal                    = 0;
  286.                             ULONG  longpointer1              = 0;
  287.                             ULONG  longpointer2              = 0;
  288.  
  289.                             SetFont(win->RPort,GfxBase->DefaultFont);
  290.  
  291.                             GT_RefreshWindow(win,NULL);
  292.  
  293.                             /* User-Setup */
  294.                             UserSetupManageCDPicsWindow(win,wingads,userdata);
  295.                             do
  296.                                 {
  297.                                 WindowLimits(win,width+win->BorderLeft+win->BorderRight,height+win->BorderTop+win->BorderBottom,maxwidth,maxheight);
  298.                                 if (running) signal=Wait(SIGBREAKF_CTRL_C | 1L << win->UserPort->mp_SigBit);
  299.                                 if (signal & SIGBREAKF_CTRL_C) running=FALSE;
  300.                                 WindowLimits(win,win->Width,win->Height,win->Width,win->Height);
  301.                                 while (running && (imessage=GT_GetIMsg(win->UserPort)))
  302.                                     {
  303.                                     idcmpgad=(struct Gadget *)imessage->IAddress;
  304.                                     idcmpclass=imessage->Class;
  305.                                     messagecode =imessage->Code;
  306.  
  307.                                     GT_ReplyIMsg(imessage);
  308.  
  309.                                     switch(idcmpclass)
  310.                                         {
  311.                                         case IDCMP_REFRESHWINDOW:
  312.                                             GT_BeginRefresh(win);
  313.                                             GT_EndRefresh(win,TRUE);
  314.                                             break;
  315.                                         case IDCMP_MENUPICK:
  316.                                             switch(MENUNUM(messagecode))
  317.                                                 {
  318.                                                 case 0:
  319.                                                     switch (ITEMNUM(messagecode))
  320.                                                         {
  321.                                                         case 0:
  322.                                                             About(win,wingads,userdata);
  323.                                                             break;
  324.                                                         }
  325.                                                     break;
  326.                                                 }
  327.                                             break;
  328.                                         case IDCMP_NEWSIZE:
  329.                                             GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GA_Disabled,&longpointer1,GTLV_Labels,&longpointer2,TAG_END);
  330.                                             gadgetdata.gd_Disabled_CD=(longpointer1 == 0)?FALSE:TRUE;
  331.                                             gadgetdata.gd_Labels_CD=(struct List *)longpointer2;
  332.                                             GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GTLV_Top,&longpointer1,GTLV_Selected,&longpointer2,TAG_END);
  333.                                             gadgetdata.gd_Top_CD=longpointer1;
  334.                                             gadgetdata.gd_Selected_CD=longpointer2;
  335.                                             GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GA_Disabled,&longpointer1,GTLV_Labels,&longpointer2,TAG_END);
  336.                                             gadgetdata.gd_Disabled_Category=(longpointer1 == 0)?FALSE:TRUE;
  337.                                             gadgetdata.gd_Labels_Category=(struct List *)longpointer2;
  338.                                             GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GTLV_Top,&longpointer1,GTLV_Selected,&longpointer2,TAG_END);
  339.                                             gadgetdata.gd_Top_Category=longpointer1;
  340.                                             gadgetdata.gd_Selected_Category=longpointer2;
  341.                                             GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GA_Disabled,&longpointer1,GTLV_Labels,&longpointer2,TAG_END);
  342.                                             gadgetdata.gd_Disabled_Picture=(longpointer1 == 0)?FALSE:TRUE;
  343.                                             gadgetdata.gd_Labels_Picture=(struct List *)longpointer2;
  344.                                             GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GTLV_Top,&longpointer1,GTLV_Selected,&longpointer2,TAG_END);
  345.                                             gadgetdata.gd_Top_Picture=longpointer1;
  346.                                             gadgetdata.gd_Selected_Picture=longpointer2;
  347.                                             GT_GetGadgetAttrs(wingads[TXID_Text],win,NULL,GA_Disabled,&longpointer1,GTTX_Text,&stringpointer,TAG_END);
  348.                                             gadgetdata.gd_Disabled_Text=(longpointer1 == 0)?FALSE:TRUE;
  349.                                             strcpy(gadgetdata.gd_Text_Text,stringpointer);
  350.                                             GT_GetGadgetAttrs(wingads[STID_String],win,NULL,GA_Disabled,&longpointer1,GTST_String,&stringpointer,TAG_END);
  351.                                             gadgetdata.gd_Disabled_String=(longpointer1 == 0)?FALSE:TRUE;
  352.                                             strcpy(gadgetdata.gd_String_String,stringpointer);
  353.                                             GT_GetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GA_Disabled,&longpointer1,GTCY_Active,&longpointer2,TAG_END);
  354.                                             gadgetdata.gd_Disabled_ToShow=(longpointer1 == 0)?FALSE:TRUE;
  355.                                             gadgetdata.gd_Active_ToShow=longpointer2;
  356.                                             GT_GetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GTCY_Labels,&longpointer1,TAG_END);
  357.                                             gadgetdata.gd_Labels_ToShow=(char * *)longpointer1;
  358.                                             GT_GetGadgetAttrs(wingads[BTID_SavePrefs],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  359.                                             gadgetdata.gd_Disabled_SavePrefs=(longpointer1 == 0)?FALSE:TRUE;
  360.                                             GT_GetGadgetAttrs(wingads[BTID_Slideshow],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  361.                                             gadgetdata.gd_Disabled_Slideshow=(longpointer1 == 0)?FALSE:TRUE;
  362.                                             GT_GetGadgetAttrs(wingads[BTID_Show],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  363.                                             gadgetdata.gd_Disabled_Show=(longpointer1 == 0)?FALSE:TRUE;
  364.  
  365.                                             RemoveGList(win,gadgetlist,-1);
  366.                                             SetAPen(win->RPort,0L);
  367.                                             RectFill(win->RPort,win->BorderLeft,win->BorderTop,win->Width-win->BorderRight-1,win->Height-win->BorderBottom-1);
  368.                                             RefreshWindowFrame(win);
  369.  
  370.                                             xscale=(long double)win->Width /(long double)(width+win->BorderLeft+win->BorderRight);
  371.                                             yscale=(long double)win->Height/(long double)(height+win->BorderTop+win->BorderBottom);
  372.                                             for (i=0;i<gadgetcount;i++)
  373.                                                 {
  374.                                                 ngcopy[i].ng_LeftEdge=(WORD)((long double)newgad[i].ng_LeftEdge*xscale);
  375.                                                 ngcopy[i].ng_TopEdge =(WORD)((long double)newgad[i].ng_TopEdge *yscale);
  376.                                                 ngcopy[i].ng_Width   =(WORD)((long double)newgad[i].ng_Width   *xscale);
  377.                                                 ngcopy[i].ng_Height  =(WORD)((long double)newgad[i].ng_Height  *yscale);
  378.                                                 }
  379.  
  380.                                             FreeGadgets(gadgetlist);
  381.                                             gadgetlist=NULL;
  382.  
  383.                                             CreateGadgetsManageCDPicsWindow(&gadgetlist,ngcopy,wingads,&gadgetdata);
  384.                                             AddGList(win,gadgetlist,-1,-1,NULL);
  385.                                             RefreshGList(gadgetlist,win,NULL,-1);
  386.                                             GT_RefreshWindow(win,NULL);
  387.  
  388.                                             break;
  389.                                         case IDCMP_VANILLAKEY:
  390.                                             switch(messagecode)
  391.                                                 {
  392.                                                 case 'c':
  393.                                                     GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  394.                                                     if (longpointer1 == 0)
  395.                                                         {
  396.                                                         GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  397.                                                         GT_SetGadgetAttrs(wingads[LVID_CD],win,NULL,GTLV_Selected,longpointer1+1,TAG_END);
  398.                                                         GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GTLV_Selected,&longpointer2,TAG_END);
  399.                                                         if (longpointer2 != longpointer1)
  400.                                                             {
  401.                                                             HandleGadgetsManageCDPicsWindow(win,wingads,LVID_CD,longpointer2,&gadgetdata,userdata);
  402.                                                             }
  403.                                                         }
  404.                                                     break;
  405.                                                 case 'C':
  406.                                                     GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  407.                                                     if (longpointer1 == 0)
  408.                                                         {
  409.                                                         GT_GetGadgetAttrs(wingads[LVID_CD],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  410.                                                         if (longpointer1 != 0)
  411.                                                             {
  412.                                                             GT_SetGadgetAttrs(wingads[LVID_CD],win,NULL,GTLV_Selected,longpointer1-1,TAG_END);
  413.                                                             HandleGadgetsManageCDPicsWindow(win,wingads,LVID_CD,longpointer1-1,&gadgetdata,userdata);
  414.                                                             }
  415.                                                         }
  416.                                                     break;
  417.                                                 case 'a':
  418.                                                     GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  419.                                                     if (longpointer1 == 0)
  420.                                                         {
  421.                                                         GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  422.                                                         GT_SetGadgetAttrs(wingads[LVID_Category],win,NULL,GTLV_Selected,longpointer1+1,TAG_END);
  423.                                                         GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GTLV_Selected,&longpointer2,TAG_END);
  424.                                                         if (longpointer2 != longpointer1)
  425.                                                             {
  426.                                                             HandleGadgetsManageCDPicsWindow(win,wingads,LVID_Category,longpointer2,&gadgetdata,userdata);
  427.                                                             }
  428.                                                         }
  429.                                                     break;
  430.                                                 case 'A':
  431.                                                     GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  432.                                                     if (longpointer1 == 0)
  433.                                                         {
  434.                                                         GT_GetGadgetAttrs(wingads[LVID_Category],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  435.                                                         if (longpointer1 != 0)
  436.                                                             {
  437.                                                             GT_SetGadgetAttrs(wingads[LVID_Category],win,NULL,GTLV_Selected,longpointer1-1,TAG_END);
  438.                                                             HandleGadgetsManageCDPicsWindow(win,wingads,LVID_Category,longpointer1-1,&gadgetdata,userdata);
  439.                                                             }
  440.                                                         }
  441.                                                     break;
  442.                                                 case 'p':
  443.                                                     GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  444.                                                     if (longpointer1 == 0)
  445.                                                         {
  446.                                                         GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  447.                                                         GT_SetGadgetAttrs(wingads[LVID_Picture],win,NULL,GTLV_Selected,longpointer1+1,TAG_END);
  448.                                                         GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GTLV_Selected,&longpointer2,TAG_END);
  449.                                                         if (longpointer2 != longpointer1)
  450.                                                             {
  451.                                                             HandleGadgetsManageCDPicsWindow(win,wingads,LVID_Picture,longpointer2,&gadgetdata,userdata);
  452.                                                             }
  453.                                                         }
  454.                                                     break;
  455.                                                 case 'P':
  456.                                                     GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  457.                                                     if (longpointer1 == 0)
  458.                                                         {
  459.                                                         GT_GetGadgetAttrs(wingads[LVID_Picture],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  460.                                                         if (longpointer1 != 0)
  461.                                                             {
  462.                                                             GT_SetGadgetAttrs(wingads[LVID_Picture],win,NULL,GTLV_Selected,longpointer1-1,TAG_END);
  463.                                                             HandleGadgetsManageCDPicsWindow(win,wingads,LVID_Picture,longpointer1-1,&gadgetdata,userdata);
  464.                                                             }
  465.                                                         }
  466.                                                     break;
  467.                                                 case 'v':
  468.                                                     GT_GetGadgetAttrs(wingads[STID_String],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  469.                                                     if (longpointer1 == 0) ActivateGadget(wingads[STID_String],win,NULL);
  470.                                                     break;
  471.                                                 case 't':
  472.                                                     GT_GetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  473.                                                     if (longpointer1 == 0)
  474.                                                         {
  475.                                                         ShowGadget(win,wingads[CYID_ToShow],GADGET_DOWN);
  476.                                                         Delay(5);
  477.                                                         ShowGadget(win,wingads[CYID_ToShow],GADGET_UP  );
  478.                                                         GT_GetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  479.                                                         if (++longpointer1 == 3) longpointer1=0;
  480.                                                         GT_SetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GTCY_Active,longpointer1,TAG_END);
  481.                                                         HandleGadgetsManageCDPicsWindow(win,wingads,CYID_ToShow,longpointer1,&gadgetdata,userdata);
  482.                                                         }
  483.                                                     break;
  484.                                                 case 'T':
  485.                                                     GT_GetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  486.                                                     if (longpointer1 == 0)
  487.                                                         {
  488.                                                         ShowGadget(win,wingads[CYID_ToShow],GADGET_DOWN);
  489.                                                         Delay(5);
  490.                                                         ShowGadget(win,wingads[CYID_ToShow],GADGET_UP  );
  491.                                                         GT_GetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  492.                                                         if (longpointer1 == 0) longpointer1=3;
  493.                                                     longpointer1--;
  494.                                                         GT_SetGadgetAttrs(wingads[CYID_ToShow],win,NULL,GTCY_Active,longpointer1,TAG_END);
  495.                                                         HandleGadgetsManageCDPicsWindow(win,wingads,CYID_ToShow,longpointer1,&gadgetdata,userdata);
  496.                                                         }
  497.                                                     break;
  498.                                                 case 's':
  499.                                                     GT_GetGadgetAttrs(wingads[BTID_SavePrefs],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  500.                                                     if (longpointer1 == 0)
  501.                                                         {
  502.                                                         ShowGadget(win,wingads[BTID_SavePrefs],GADGET_DOWN);
  503.                                                         Delay(5);
  504.                                                         ShowGadget(win,wingads[BTID_SavePrefs],GADGET_UP  );
  505.                                                         HandleGadgetsManageCDPicsWindow(win,wingads,BTID_SavePrefs,messagecode,&gadgetdata,userdata);
  506.                                                         }
  507.                                                     break;
  508.                                                 case 'l':
  509.                                                     GT_GetGadgetAttrs(wingads[BTID_Slideshow],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  510.                                                     if (longpointer1 == 0)
  511.                                                         {
  512.                                                         ShowGadget(win,wingads[BTID_Slideshow],GADGET_DOWN);
  513.                                                         Delay(5);
  514.                                                         ShowGadget(win,wingads[BTID_Slideshow],GADGET_UP  );
  515.                                                         HandleGadgetsManageCDPicsWindow(win,wingads,BTID_Slideshow,messagecode,&gadgetdata,userdata);
  516.                                                         }
  517.                                                     break;
  518.                                                 case 'i':
  519.                                                     GT_GetGadgetAttrs(wingads[BTID_Show],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  520.                                                     if (longpointer1 == 0)
  521.                                                         {
  522.                                                         ShowGadget(win,wingads[BTID_Show],GADGET_DOWN);
  523.                                                         Delay(5);
  524.                                                         ShowGadget(win,wingads[BTID_Show],GADGET_UP  );
  525.                                                         HandleGadgetsManageCDPicsWindow(win,wingads,BTID_Show,messagecode,&gadgetdata,userdata);
  526.                                                         }
  527.                                                     break;
  528.                                                 case 27:
  529.                                                     running=FALSE;
  530.                                                     break;
  531.                                                 }
  532.                                             break;
  533.                                         case IDCMP_CLOSEWINDOW:
  534.                                             running=FALSE;
  535.                                             break;
  536.                                         case IDCMP_GADGETUP:
  537.                                         case MXIDCMP:
  538.                                             HandleGadgetsManageCDPicsWindow(win,wingads,idcmpgad->GadgetID,messagecode,&gadgetdata,userdata);
  539.                                             break;
  540.                                         }
  541.                                     /* end-switch */
  542.                                     }
  543.                                 /* end-while */
  544.                                 }
  545.                             while (running);
  546.                             ClearMenuStrip(win);
  547.                             }
  548.                         else GUIC_ErrorReport(win,ERROR_NO_WINDOW_MENU);
  549.                         }
  550.                     else GUIC_ErrorReport(win,ERROR_NO_WINDOW_MENU);
  551.                     FreeMenus(menustrip);
  552.                     }
  553.                 else GUIC_ErrorReport(win,ERROR_NO_WINDOW_MENU);
  554.                 if (win) CloseWindow(win);
  555.                 }
  556.             else GUIC_ErrorReport(win,ERROR_NO_WINDOW_OPENED);
  557.             if (gadgetlist) FreeGadgets(gadgetlist);
  558.             }
  559.         else GUIC_ErrorReport(NULL,ERROR_NO_GADGETS_CREATED);
  560.         if (visualinfo) FreeVisualInfo(visualinfo);
  561.         }
  562.     else GUIC_ErrorReport(NULL,ERROR_NO_VISUALINFO);
  563. }
  564. ///
  565.  
  566.